🦊Scheduling Model Weights
👉 |
Stable DIffusion web UIではすでに出来ましたが、サンプリングの途中でckpt/LoRAモデルのstrengthを変更できるようになりました
とても詳しい解説
基本形
https://gyazo.com/18aa1d216f7355562434b36d1d69010f
https://gyazo.com/f62fd199b9b6ca23b1b0c87a64b538b3
strength_mult
start_percent (0.0 ~ 1.0)
どのタイミングのサンプリングステップでこの設定を適用するか設定します
この画像の場合
1つ目のCreate Hook Keyframeがstrength_mult = 0/start_percent = 0
2つ目のCreate Hook Keyframeがstrength_mult = 0.5/start_percent = 0.8
KSamplerのspeps = 20
なので、LoRAは0 ~ 10ステップはstrength = 0、 11 ~ 20ステップはstrength = 0.64 (Create Hook LoRA : 0.8 * Create Hook Keyframe : 0.8)で適用される
LoRAではなくckptモデルを使う
https://gyazo.com/5d1be0ac86e6feec6272ac5f8dc96011
計算式
$ base_model*(1-strength) + target*strength
つまり🟥設定したモデルの強さを0にすれば、元のモデルのみの推論
強さを1にした場合は、設定したモデルのみの推論になります
https://gyazo.com/6a7133bc7bc5cc9b0aad142982315342
step数20の場合
0 ~ 10ステップはベースモデルのみ
11 ~ 20ステップはベースモデル 20% / Create Hook Model as LoRAノードで設定したモデル 80%で推論
滑らかに値を変化させる
https://gyazo.com/d10dc0709b6e96d46f3c500e1a916a1a
https://gyazo.com/866a2c7553dc5ef43d6c558e9406e26f
イージングを使って値を変化させます
strength_start / end
interp ( linear / ease_in / ease_out / ease_in_out )
イージングのタイプを設定
start / end_percent (0.0 ~ 1.0)
keyframes_count
何分割して適用するか
print_keyframes
これをtrueにすると、ログに計算された適用される値が表示されます
https://gyazo.com/991399707eab4e0bb62db5f78a19d10a
グラフで見ないと想像つきにくいかもしれない
https://gyazo.com/17c03e17148e3e4c853b70c0326a610e
🚨これを5分割するので、このグラフのように滑らかではなく、階段状になる
複数のHooKを組み合わせる
https://gyazo.com/67a7d8cdaa1043fd90f0214f238d9286
https://gyazo.com/71bdfa65b22a11a8371f47a483d2a096
どこで使うか?
絵柄LoRAや年齢を変化させるLoRAに有効